/**
 * Creates the base structure of a Menu
 * @member Ext.menu.Menu
 */
@mixin extjs-menu {
  .#{$prefix}menu-body {
    @include no-select;
    background: $menu-background-color !important;
    padding: $menu-padding;
  }

  .#{$prefix}menu-item .#{$prefix}form-text {
    user-select: text;
    -webkit-user-select: text;
    -o-user-select: text;
    -ie-user-select: text;
    -moz-user-select: text;
    -ie-user-select: text;
  }

  .#{$prefix}menu-icon-separator {
    position: absolute;
    top: 0px;
    left: $menu-item-indent;
    z-index: 0;
    border-left: solid 1px $menu-separator-border-color;
    background-color: $menu-separator-background-color;
    width: 2px;
    overflow: hidden;
  }

  .#{$prefix}menu-plain {
    .#{$prefix}menu-icon-separator {
      display: none;
    }
  }

  .#{$prefix}menu-focus {
    display: block;
    position: absolute;
    top: -10px;
    left: -10px;
    width: 0px;
    height: 0px;
  }

  .#{$prefix}menu-item {
    white-space: nowrap;
    overflow: hidden;
    z-index: 1;
  }

  .#{$prefix}menu-item-cmp {
    margin-bottom: 1px;
  }

  .#{$prefix}menu-item-link {
    display: block;
    margin: 1px;
    padding: $menu-link-padding;
    text-decoration: none !important;
    line-height: 16px;
    cursor: default;
  }

  @if $include-opera {
    .#{$prefix}opera {
      // Opera 10.5 absolute positioning of submenu arrow has issues
      // This will fix it, and not affect newer Operas
      .#{$prefix}menu-item-link {
        position: relative;
      }
    }
  }

  .#{$prefix}menu-item-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    top: 5px;
    left: 4px;
    background: no-repeat center center;
  }

  // For when an icon needs to be used in the right position where a submenu arrow usually goes.
  // eg: When a CheckItem needs an icon. The left icon position is a checkbox, so the icon is moved to the right.
  .#{$prefix}menu-item-icon-right {
    width: 16px;
    height: 16px;
    position: absolute;
    top: 6px;
    right: 4px;
    background: no-repeat center center;
  }

  .#{$prefix}menu-item-text {
    font-size: ceil($font-size * .9);
    color: $menu-text-color;
  }

  .#{$prefix}menu-item-checked {
    .#{$prefix}menu-item-icon {
      background-image: theme-background-image($theme-name, $menu-icon-checked);
    }

    .#{$prefix}menu-group-icon {
      background-image: theme-background-image($theme-name, $menu-icon-group-checked);
    }
  }

  .#{$prefix}menu-item-unchecked {
    .#{$prefix}menu-item-icon {
      background-image: theme-background-image($theme-name, $menu-icon-unchecked);
    }

    .#{$prefix}menu-group-icon {
      background-image: none;
    }
  }

  .#{$prefix}menu-item-separator {
    height: 2px;
    border-top: solid 1px $menu-separator-border-color;
    background-color: $menu-separator-background-color;
    margin: $menu-padding 0px;
    overflow: hidden;
  }

  .#{$prefix}menu-item-arrow {
    position: absolute;
    width: 12px;
    height: 9px;
    top: 9px;
    right: 0px;
    background: no-repeat center center;
    background-image: theme-background-image($theme-name, $menu-icon-arrow);
  }

  .#{$prefix}menu-item-indent {
    margin-left: $menu-item-indent + $menu-padding + 2px; /* The 2px is the width of the seperator */
  }

  .#{$prefix}menu-item-active {
    cursor: pointer;

    .#{$prefix}menu-item-link {
      @include background-gradient($menu-item-active-background-color, 'matte');
      margin: 0px;
      border: 1px solid $menu-item-active-border-color;
      cursor: pointer;
      @include border-radius(3px);
    }
  }

  .#{$prefix}menu-item-disabled {
    @include opacity(.5);
  }

  @if $include-ie {
    .#{$prefix}ie {
      .#{$prefix}menu-item-disabled {
        .#{$prefix}menu-item-icon {
          @include opacity(.5);
        }

        .#{$prefix}menu-item-text {
          // IE opacity/cleartype bug workaround
          background-color: transparent;
        }
      }

      .#{$prefix}strict .#{$prefix}ie7m & {
        .#{$prefix}menu-icon-separator {
          width: 1px;
        }

        .#{$prefix}menu-item-separator {
          height: 1px;
        }
      }
    }

    .#{$prefix}ie6,
    .#{$prefix}ie7,
    .#{$prefix}quirks .#{$prefix}ie8 {
      .#{$prefix}menu-item-link {
        padding-bottom: $menu-padding;
      }
    }
  }

  @if not $supports-gradients or $compile-all {
    .#{$prefix}nlg {
      .#{$prefix}menu-item-active .#{$prefix}menu-item-link {
        background: $menu-item-active-background-color repeat-x left top;
        background-image: theme-background-image($theme-name, $menu-item-active-background-image);
      }
    }
  }

  .#{$prefix}menu-date-item {
    border-color: #99BBE8;
  }
}
